
#默认参数
def demoFunc1(name,age=18):
	if not isinstance(name,(str)):
	    name = str(name);
	if not isinstance(age,(int)):
	    raise TypeError('age的值类型必须为int')
	return '欢迎{age}岁的：{name}'.format(name=name,age=age);

str1 = demoFunc1('qiaoansheng');
print(str1)
print(demoFunc1('qiaoansheng',123))


def add_end(L=[]):
    L.append('END')
    return L

list1 = [1,2,3,4,5]
list1 = add_end(list1);
list1 = add_end(list1);
print(list1)
add_end()
add_end()
print(add_end())
#出现这种情况的原因是因为，L实际上是一个引用，
#所以 调用add_end()方法的时候实际上是把一个引用赋值给了L，
#所以L发生改变的时候，传过来的那个变脸也会发生改变，下面的例子已经证明了这个事情
#由于直接调用add_end()所以L的引用只有他自己引用，第二次再次调用add_end()的时候，
#这个L的引用还是之前的那个所以append()方法就会在之前的基础上再增加一个元素
list2 = [1,2,3,4,5]
print(add_end(list2))
#[1, 2, 3, 4, 5, 'END']
print(list2)
#[1, 2, 3, 4, 5, 'END']
def demoFunc3(L=None):
	if L is None:
	    L = []
	else:
		L.append('END');
	return L;
demoFunc3()
demoFunc3()
print(demoFunc3())
#输出：[]